import axios from 'axios';

// 定义LSTM评估指标接口
interface LSTMMetrics {
    "MAE": number;
    "RMSE": number;
    "R2": number;
}

// 定义评估响应类型
export interface LSTMEvaluationResponse {
    metrics: LSTMMetrics;
    model_type: 'lstm';
    plot_url: string;
    status: 'success' | 'error';
    message?: string; // 可选，错误时使用
}

// 目标类型枚举
export enum LSTMTargetType {
    GUILIN_TEMP = 'guilin_temp',
    // 可以添加其他LSTM支持的目标类型
}

/**
 * 评估LSTM模型
 * @param target 预测目标，默认为桂林温度
 * @returns 包含评估结果的Promise
 */
export const evaluateLSTMModel = async (
    target: LSTMTargetType = LSTMTargetType.GUILIN_TEMP
): Promise<LSTMEvaluationResponse> => {
    try {
        const response = await axios.get<LSTMEvaluationResponse>(
            `/evaluate_lstm`,
            {
                params: { target },
                baseURL: 'http://127.0.0.1:5000/api' // 注意这里去掉了末尾的斜杠
            }
        );

        // 处理Windows路径问题（如果需要）
        if (response.data.plot_url) {
            response.data.plot_url = response.data.plot_url.replace(/\\/g, '/');
        }

        return response.data;
    } catch (error: any) {
        console.error('LSTM模型评估失败:', error);
        return {
            status: 'error',
            message: error.response?.data?.message || '请求LSTM评估接口失败',
            metrics: {
                "MAE": 0,
                "RMSE": 0,
                "R2": 0
            },
            model_type: 'lstm',
            plot_url: ''
        };
    }
};